The present invention relates to file systems, and more specifically to transparent file system migration to a new physical location.
Most modern operating systems provide a way to store print ready objects in their file system and to send them to the printer asynchronously. This allows applications that create print objects to continue processing before the printer actually prints the output. This process is referred to as SPOOLing (simultaneous peripheral operations on-line), and the data stored is referred to as the SPOOL. The SPOOL can also be used to store information that is arriving at a system from input peripheral devices such as networking devices.
In a multi-image operating system environment (e.g., multiple operating systems in a coupled environment) there is an advantage to sharing a single SPOOL amongst all operating system images. One advantage is that it allows processes on one image to access peripherals on other images. In the shared environment, the SPOOL is simultaneously being accessed (written to and read from) from multiple processes (threads) on multiple independent operating system images.
A SPOOL can be implemented as a series of files in the native file system of the operating system. However, it can also be implemented as a new logical file system mapped over the native file system of the operating system. This is often done to overcome native file system limitations, restrictions, and/or performance issues. Files in the SPOOL file system are generally temporary in nature, written and read once, and they can be very large. In a large operating system, the SPOOL can span multiple physical/logical storage devices in order to accommodate not just the size of objects placed in the SPOOL, but also the required performance characteristics.
A SPOOL that is implemented as a file system mapped onto objects in the native file system of the operating system can be thought of as a logical file system (LFS). Like any file system, there is a requirement to expand and contract the space available for SPOOL files. Increasing space can be accomplished by added a new native file system object to the SPOOL. Contracting the SPOOL would then require the removal of a native file system object from the SPOOL. However, before a native file system object can be removed, all the SPOOL files that reside on that object must be removed from the object. The traditional way to do this is to mark the native file system object as unavailable for new SPOOL data sets, and then, since SPOOL files are temporary, wait for the SPOOL files that are located on this object to be deleted. Once all SPOOL files that use the object are deleted, the native file system object can be removed from SPOOL and deleted.